Files
akbasic/docs/images/breakout-artwork.png

32 lines
8.1 KiB
Plaintext
Raw Normal View History

Add two Breakout examples and the tutorials that build them Two complete games in `examples/breakout/`, both 100% BASIC: `characters/` draws its wall in the text grid with two `DATA` sprites for the ball and paddle, and `sprites/` loads CC0 artwork and captures its whole screen with `SSHAPE`/`SPRSAV`. They take opposite shapes for reasons that are entirely this interpreter's, which is what the chapters are for. `docs/17-tutorial-breakout.md` and `docs/18-tutorial-breakout-artwork.md` build each one a step at a time, and end in a checklist of the rules a real program runs into: create every name before the loop starts, write a text row whole, loop with `GOTO` rather than `DO`, put the float on the left. Every trap is a runnable block with its own output rather than a claim -- the value pool dying at four thousand names, the skipped `BEGIN` block that breaks its caller's `RETURN`, `SSHAPE` ignoring a subscript, `READ`'s single cursor. Five figures, generated from the listings beside them by `docs_screenshots`, and a `breakout_art` setup so the ones that load artwork load the example's own. The character game's wall cannot be photographed -- the screenshot host omits the text layer on purpose -- so it is shown as compared output instead. `docs/07-sound.md` never said `SOUND`'s frequency is a SID register value rather than hertz, which both games depend on. It says so now, with the conversion from `src/audio_tables.c:84`. `TODO.md` gains the thirteen defects the two games turned up -- §6 items 30 to 33 and all of §9 -- each with a reduction that fits on a screen, the file and line of the cause, and what a fix would touch. Verified: `docs_examples` passes in both build configurations, `docs_screenshots --check` re-renders all thirteen figures and byte-compares them, the full 109-test suite passes in both builds, every quoted fragment was checked to appear verbatim in the listing it came from, and every relative link and anchor resolves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
2026-08-01 22:54:42 -04:00
<EFBFBD>PNG

IHDR@<00>f<><66> IDATx<54><78><EFBFBD>Yp\י<18><><EFBFBD><EFBFBD><EFBFBD>t<><74><EFBFBD>FlW<><57><EFBFBD><EFBFBD>&)k<><6B>ƋbK<15><>d2<64><32>);<15>[♧Tj<54><6A>L<EFBFBD>5I<35>%'<27><>cOR<4F><52><EFBFBD><EFBFBD>g<EFBFBD>5<EFBFBD>Fc<46><63>b<EFBFBD><62>$$H,z_<7A>z<EFBFBD><\<04><>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>ݧ<0F><EFBFBD><EFBFBD>{<00>B!<21>B!<21>B!<21>B!<21>B!<21>B!<21>B!<21>B!<21>B!<21>Pg<50>ֿclP<6C>T&<26><><EFBFBD>I<EFBFBD>oH<19><>u<EFBFBD><75><EFBFBD><EFBFBD>W3-<2D><>]<5D><><EFBFBD><EFBFBD>U]<5D><17>lu޿<75>+<2B>p<EFBFBD>]<5D>B{<7B><>ڷӟ<DAB7><1D><><EFBFBD>[<5B><><EFBFBD>eㆥN<E386A5>O<><4F>]<5D><><EFBFBD><EFBFBD><EFBFBD>.<2E>k<EFBFBD>-zP<7A><50><05>RS<52><EFBFBD>/<2F><>i<EFBFBD>d<EFBFBD>7HBѰ<42>EM=<3D><>1<>ʝ<EFBFBD>q<EFBFBD><71>R<EFBFBD>ت<02>Ϳ<EFBFBD><CDBF><EFBFBD>1<EFBFBD>ޟ]ʸ(<14>9<EFBFBD>u=OX%QXθS<CEB8><53><EFBFBD>[<5B>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ךx<>ᕒcRr\<5C><>L<EFBFBD>Y5h7<68>ս<EFBFBD>|z<>7<><37>W <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́)<29><>K<EFBFBD><4B>m/5<><35>7!<21>~<7E><00>a<EFBFBD>rUZ<55><5A>R<EFBFBD>?<13><>W@<40><><EFBFBD>9)<29><>7<EFBFBD>CaS<61><53><EFBFBD>_<EFBFBD><5F>LI4_<34>6<EFBFBD><36><EFBFBD><EFBFBD><18><><EFBFBD>)<19>l<EFBFBD>]-B"qQ<71>h<EFBFBD>c<>5<EFBFBD>z<EFBFBD>-eD{<7B><><EFBFBD><EFBFBD>SS<53>'<27> Rj<52><18><>"<22><><EFBFBD><EFBFBD><EFBFBD>}f><3E><> <09>7<EFBFBD><37>q<>t9M<39><4D>L<EFBFBD>R$b<><62><EFBFBD>$<00><><EFBFBD>2<EFBFBD> <0A>r<EFBFBD><72><EFBFBD><EFBFBD>l<00><1F><>d<EFBFBD>I|X<><1B> H<><1A>^<5E><><EFBFBD>9p<39>p9M<39><4D>tܔ H}<7D><>/)a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><><00>RS<52><53>H<><48><03>ሮ+<2B><><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD>ѝu<D19D>h<EFBFBD><06><>*Gt<00><>&A<><41><EFBFBD><EFBFBD><EFBFBD>F<18>PS<01>=<3D>4<00><>A"+<00>
k<EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>;5<1E><00>4U <20>B<EFBFBD>q<00>zf<7A>J<EFBFBD><4A><EFBFBD><EFBFBD>X<1E>)<07><>&7<><C<>)h<>2%1<>4<EFBFBD>A<EFBFBD><41>R$ <20>8(<28>s<EFBFBD>X2<58><32>45<34><35>N<EFBFBD> Š<>Lo-=<3D>?<07><><EFBFBD>RIm<49>䨮X<E4A8AE> **<2A><>"<22><><EFBFBD><EFBFBD>'<27>'>EB}?V<>><3E><13><>_<08><>f<EFBFBD><66><EFBFBD><16><>jPO<50>`<05><1B>OK<4F>Or<><72><EFBFBD><EFBFBD>A$<14><EFBFBD>ߙO~Z
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'?<3F>+<05><><EFBFBD><7F><EFBFBD><EFBFBD>a<EFBFBD>+ZvI-<2D><><EFBFBD><EFBFBD>6=ä<><C3A4><EFBFBD>M <20>mSڪ<53><DAAA><08>nW<6E>՜<EFBFBD><D59C>{ <20>P<EFBFBD><50> <0A>ѷ<EFBFBD>